const express = require('express')
const axios = require('axios')
const cors = require('cors')
const alipaySdk = require('./alipayUtil')
const AlipayFormData = require('alipay-sdk/lib/form').default; // alipay.trade.page.pay 返回的内容为 Form 表单

const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }));
// 使用cors解决跨域问题
app.use(cors())


app.post('/realizePay', (req, res) => {
    const id = req
    console.log(id,16);
    const formData = new AlipayFormData();
    // 调用 setMethod 并传入 get，会返回可以跳转到支付页面的 url 
    formData.setMethod('get');
    // 通过 addField 增加参数
    // 在用户支付完成之后，支付宝服务器会根据传入的 notifyUrl(通告的地址)，以 POST 请求的形式将支付结果作为参数通知到商户系统。
    formData.addField('notifyUrl', 'https://www.baidu.com'); // 支付成功回调地址，必须为可以直接访问的地址，不能带参数
    formData.addField('bizContent', {
        outTradeNo: 1657546808374, // 商户订单号,64个字符以内、可包含字母、数字、下划线,且不能重复
        productCode: 'FAST_INSTANT_TRADE_PAY', // 销售产品码，与支付宝签约的产品码名称,仅支持FAST_INSTANT_TRADE_PAY
        totalAmount: '0.01', // 订单总金额，单位为元，精确到小数点后两位
        subject: '商品', // 订单标题
        body: '商品详情', // 订单描述
    });
    formData.addField('returnUrl', 'https://opendocs.alipay.com'); // 加在这里才有效果,不是加在bizContent 里面
    // 如果需要支付后跳转到商户界面，可以增加属性"returnUrl"
    alipaySdk.exec(  // 为可以跳转到支付链接的 url
        'alipay.trade.page.pay', // 统一收单下单并支付页面接口
        {}, // api 请求的参数（包含“公共请求参数”和“业务参数”）
        { formData: formData },
    ).then((resp) => {
        res.json(
            {
                "success": true,
                "message": "支付成功",
                "code": 200,
                "timestamp": (new Date()).getTime(),
                "result": resp
            }
        )
    });

})
// app.post('/paycallback', async (req, res) => {
//     console.log('calling paycallback...');
//     console.log("触发付款")
//     // ========= 由请求体内的订单信息，在这里进行数据库中订单状态的更改 ============
//     console.log("支付完成！")

// })


app.listen(3031)